package pe.com.cotelasa.scp.controlador.backingBean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.DualListModel;

import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.scp.controlador.comando.IComando;

import pe.com.cotelasa.scp.entidad.CompraFacturacion;
import pe.com.cotelasa.scp.entidad.DetalleCompraFacturacion;
import pe.com.cotelasa.scp.entidad.GuiaRemision;
import pe.com.cotelasa.scp.entidad.OrdenCompraServicio;
import pe.com.cotelasa.scp.entidad.OrdenPedido;
import pe.com.cotelasa.scp.entidad.Proveedor;
import pe.com.cotelasa.scp.entidad.TipoFormaPago;
import pe.com.cotelasa.scp.entidad.TipoMoneda;

/**
 * @author jastonitas
 */
@Named(value = "BKCompraFacturacion")
@Scope("session")
public class BKCompraFacturacion implements Serializable {

    private static final long serialVersionUID = -682446660432112641L;
    private CompraFacturacion facturaFormulario;
    private CompraFacturacion seleccionado;
    private Date hoy = new Date();
    private CompraFacturacion facturaSeleccionada;
    private CompraFacturacion facturaBusqueda;
    private Collection<CompraFacturacion> listaFacturasBusqueda;
    
    private Collection<OrdenPedido> listaOrdenesPedidoBusqueda;
    private Collection<OrdenCompraServicio> listaOrdenesCSBusqueda;
    
    private Collection<OrdenPedido> listaOrdenesPedidoFormulario;
    private Collection<OrdenCompraServicio> listaOrdenesCSFormulario;
    
    private List<GuiaRemision> listaGuiaRemisionElegir;
    private List<GuiaRemision> listaGuiaRemisionElegido;
    private List<String> listaGuiaSeleccionadas;
    
    private List<DetalleCompraFacturacion> listaDetalleFactura = new ArrayList<DetalleCompraFacturacion>();
    
    private DualListModel<GuiaRemision> dualGuiaRemision = new DualListModel<GuiaRemision>();
    
    private DualListModel<String> dualNumGuiaRemision = new DualListModel<String>();
    private IComando comando;
    
    private Collection<TipoFormaPago> listaFormaPago;
    private List<String> listaTipoPago;
    private Collection<TipoMoneda> listaTipoMoneda;
    private Collection<Proveedor> listaProveedor;
    
    private Date fechaInicio;
    private Date fechaFinal;
    
    @Inject
    private BKCompraDetalleFacturacion detalle;

    public BKCompraFacturacion() {
        this.listaGuiaSeleccionadas = new ArrayList<String>();
        this.listaGuiaRemisionElegido = new ArrayList<GuiaRemision>();
        this.listaGuiaRemisionElegir = new ArrayList<GuiaRemision>();
    }

    public void inicializarBean() {
        facturaFormulario = new CompraFacturacion();
    }

    public CompraFacturacion getFacturaFormulario() {
        return facturaFormulario;
    }

    public void setFacturaFormulario(CompraFacturacion facturaFormulario) {
        this.facturaFormulario = facturaFormulario;
    }

    public Date getHoy() {
        return hoy;
    }

    public void setHoy(Date hoy) {
        this.hoy = hoy;
    }

    public CompraFacturacion getFacturaSeleccionada() {
        return facturaSeleccionada;
    }

    public void setFacturaSeleccionada(CompraFacturacion facturaSeleccionada) {
        this.facturaSeleccionada = facturaSeleccionada;
    }

    public CompraFacturacion getFacturaBusqueda() {
        return facturaBusqueda;
    }

    public void setFacturaBusqueda(CompraFacturacion facturaBusqueda) {
        this.facturaBusqueda = facturaBusqueda;
    }

    public Collection<CompraFacturacion> getListaFacturasBusqueda() {
        return listaFacturasBusqueda;
    }

    public void setListaFacturasBusqueda(Collection<CompraFacturacion> listaFacturasBusqueda) {
        this.listaFacturasBusqueda = listaFacturasBusqueda;
    }

    public CompraFacturacion getSeleccionado() {
        return seleccionado;
    }

    public void setSeleccionado(CompraFacturacion seleccionado) {
        this.seleccionado = seleccionado;
    }

    public BKCompraDetalleFacturacion getDetalle() {
        return detalle;
    }

    public void setDetalle(BKCompraDetalleFacturacion detalle) {
        this.detalle = detalle;
    }

    public Collection<OrdenPedido> getListaOrdenesPedidoBusqueda() {
        return listaOrdenesPedidoBusqueda;
    }

    public void setListaOrdenesPedidoBusqueda(Collection<OrdenPedido> listaOrdenesPedidoBusqueda) {
        this.listaOrdenesPedidoBusqueda = listaOrdenesPedidoBusqueda;
    }

    public Collection<OrdenCompraServicio> getListaOrdenesCSBusqueda() {
        return listaOrdenesCSBusqueda;
    }

    public void setListaOrdenesCSBusqueda(Collection<OrdenCompraServicio> listaOrdenesCSBusqueda) {
        this.listaOrdenesCSBusqueda = listaOrdenesCSBusqueda;
    }

    public Collection<OrdenPedido> getListaOrdenesPedidoFormulario() {
        return listaOrdenesPedidoFormulario;
    }

    public void setListaOrdenesPedidoFormulario(Collection<OrdenPedido> listaOrdenesPedidoFormulario) {
        this.listaOrdenesPedidoFormulario = listaOrdenesPedidoFormulario;
    }

    public Collection<OrdenCompraServicio> getListaOrdenesCSFormulario() {
        return listaOrdenesCSFormulario;
    }

    public void setListaOrdenesCSFormulario(Collection<OrdenCompraServicio> listaOrdenesCSFormulario) {
        this.listaOrdenesCSFormulario = listaOrdenesCSFormulario;
    }

    public List<GuiaRemision> getListaGuiaRemisionElegir() {
        return listaGuiaRemisionElegir;
    }

    public void setListaGuiaRemisionElegir(List<GuiaRemision> listaGuiaRemisionElegir) {
        this.listaGuiaRemisionElegir = listaGuiaRemisionElegir;
    }

    public List<GuiaRemision> getListaGuiaRemisionElegido() {
        return listaGuiaRemisionElegido;
    }

    public void setListaGuiaRemisionElegido(List<GuiaRemision> listaGuiaRemisionElegido) {
        this.listaGuiaRemisionElegido = listaGuiaRemisionElegido;
    }

    public DualListModel<GuiaRemision> getDualGuiaRemision() {
        return dualGuiaRemision;
    }

    public void setDualGuiaRemision(DualListModel<GuiaRemision> dualGuiaRemision) {
        this.dualGuiaRemision = dualGuiaRemision;
    }

    public List<DetalleCompraFacturacion> getListaDetalleFactura() {
        return listaDetalleFactura;
    }

    public void setListaDetalleFactura(List<DetalleCompraFacturacion> listaDetalleFactura) {
        this.listaDetalleFactura = listaDetalleFactura;
    }

    public IComando getComando() {
        return comando;
    }

    public void setComando(IComando comando) {
        this.comando = comando;
    }

    public DualListModel<String> getDualNumGuiaRemision() {
        return dualNumGuiaRemision;
    }

    public void setDualNumGuiaRemision(DualListModel<String> dualNumGuiaRemision) {
        this.dualNumGuiaRemision = dualNumGuiaRemision;
    }

    public List<String> getListaGuiaSeleccionadas() {
        return listaGuiaSeleccionadas;
    }

    public void setListaGuiaSeleccionadas(List<String> listaGuiaSeleccionadas) {
        this.listaGuiaSeleccionadas = listaGuiaSeleccionadas;
    }

    public Collection<TipoFormaPago> getListaFormaPago() {
        return listaFormaPago;
    }

    public void setListaFormaPago(Collection<TipoFormaPago> listaFormaPago) {
        this.listaFormaPago = listaFormaPago;
    }

    public List<String> getListaTipoPago() {
        return listaTipoPago;
    }

    public void setListaTipoPago(List<String> listaTipoPago) {
        this.listaTipoPago = listaTipoPago;
    }

    public Collection<TipoMoneda> getListaTipoMoneda() {
        return listaTipoMoneda;
    }

    public void setListaTipoMoneda(Collection<TipoMoneda> listaTipoMoneda) {
        this.listaTipoMoneda = listaTipoMoneda;
    }

    public Collection<Proveedor> getListaProveedor() {
        return listaProveedor;
    }

    public void setListaProveedor(Collection<Proveedor> listaProveedor) {
        this.listaProveedor = listaProveedor;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFinal() {
        return fechaFinal;
    }

    public void setFechaFinal(Date fechaFinal) {
        this.fechaFinal = fechaFinal;
    }

}
